package ejb.com.bbva.cbm.service;
import java.io.Serializable;
import java.util.List;

import org.springframework.context.ApplicationContext;

import ejb.cbm.admin.bean.ArchivoBean;
import ejb.cbm.admin.bean.ParametroBean;
import ejb.cbm.admin.bean.SegmentoBean;
import ejb.cbm.admin.bean.TipoParametroBean;
import ejb.cbm.admin.entity.CentroCostoProtegidoEntity;
import ejb.cbm.admin.entity.ParametroEntity;
import ejb.cbm.admin.entity.TipoParametroEntity;
import ejb.cbm.admin.entity.TransaccionEntity;
import ejb.cbm.seguridad.bean.UsuarioBean;
import ejb.cbm.seguridad.entity.PerfilEntity;
import ejb.com.bbva.cbm.dominio.CentroCostoEntity;
import ejb.com.bbva.cbm.dominio.DenominacionEntity;
import ejb.com.bbva.cbm.dominio.TransaccionPerfilEntity;
import ejb.com.bbva.cbm.dominio.TransaccionSignificativaEntity;
import ejb.com.bbva.cbm.util.CacheDatos;
import ejb.com.bbva.cbm.util.DatosEnvioHost;
import ejb.com.bbva.cbm.util.DatosInicioAplicacion;
import ejb.com.bbva.cbm.util.DatosTerminoAplicacion;

////@Local
public interface AdministracionServiceLocal {

    List<TipoParametroEntity> obtenerTiposParametrosTodos() throws Exception;
    List<ParametroEntity> obtenerParametrosTodos() throws Exception;
    List<DenominacionEntity> obtenerDenominaciones() throws Exception;

	/************************************************************************************************
	 * ARCHIVO ENVIO HOST
	 ************************************************************************************************/
    DatosEnvioHost obtenerDatosEnvioHost() throws Exception;
    void grabarDatosEnvioHost(String usuario) throws Exception;
    void grabarEnvioHostAuto() throws Exception;

	/************************************************************************************************
	 * CACHE DE DATOS
	 ************************************************************************************************/
    CacheDatos inicializarCacheDatos() throws Exception;
    
	/************************************************************************************************
	 * INICIO DE APLICACION
	 ************************************************************************************************/
    DatosInicioAplicacion obtenerDatosInicioAplicacion() throws Exception;
    void grabarInicioAplicacion(DatosInicioAplicacion datosInicioAplicacion) throws Exception;
    boolean iniciarAplicacion(String usuario) throws Exception;
    
	List<TransaccionEntity> obtenerTransaccionesInicioAplicacion() throws Exception;
	List<TransaccionEntity> obtenerTodasTransacciones() throws Exception;
	
	List<CentroCostoProtegidoEntity> obtenerCentrosCostoProtegidoInicioAplicacion() throws Exception;
    List<TransaccionPerfilEntity> obtenerTransaccionesPerfilInicioAplicacion() throws Exception;
	List<TransaccionSignificativaEntity> obtenerTransaccionesSignificativasInicioAplicacion() throws Exception;
	
	CentroCostoEntity obtenerCentroCostoPorId(Serializable id) throws Exception;
	CentroCostoEntity obtenerCentroCostoPorOficinaId(String oficinaId) throws Exception;
	List<CentroCostoEntity> obtenerCentrosCostoPorIdNombre(String filtro) throws Exception;
	PerfilEntity obtenerPerfilPorId(Serializable id) throws Exception;
    List<PerfilEntity> obtenerPerfilesPorIdNombre(String filtro) throws Exception;
    List<ParametroEntity> findByFiltro(ParametroEntity filtro) throws Exception;
    public List<TransaccionEntity> obtenerTransaccionesExtorno()throws Exception;
    public List<TransaccionEntity> obtenerTransaccionesAuditoria()throws Exception;
	
	/************************************************************************************************
	 * FIN DE APLICACION
	 ************************************************************************************************/
    DatosTerminoAplicacion obtenerDatosTerminoAplicacion() throws Exception;
    boolean terminarAplicacion(String usuario) throws Exception;
    boolean copiarHistorico(String usuario) throws Exception;
    boolean reiniciarAplicacion() throws Exception;
 

	/************************************************************************************************
	 * CONFIGURACION DE PARAMETROS
	 ************************************************************************************************/
    ParametroEntity obtenerParametro(Long parametroId) throws Exception;
    List<ParametroEntity> obtenerParametrosPadre(Long tipoParametroId, Long parametroId) throws Exception;
   	
   	ParametroEntity registrarParametro(ParametroEntity parametro, UsuarioBean usuarioLogeado) throws Exception;
   	ParametroEntity modificarParametro(ParametroEntity parametro, UsuarioBean usuarioLogeado) throws Exception;
   	void eliminarParametro(ParametroEntity parametro, UsuarioBean usuarioLogeado) throws Exception;
    
    public ParametroBean buscarParametro(Long codigoParametro)throws Exception;
   	public List<TipoParametroBean> buscarTiposParametros()throws Exception;
   	
   	public List<SegmentoBean> buscarSegmentos(String codigoSegmentoHost,String codigoSegmentoParametro,String etiquetaComercial,String tipoConfiguracion)throws Exception;
   	
   	public void actualizarCron(ApplicationContext springcontext, String nombreTrigger, ArchivoBean beanProgramacion) throws Exception;
}
